package br.com.jmmarca.controller;

import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import br.com.jmmarca.dao.impl.EventoDAO;
import br.com.jmmarca.dao.impl.EventoProdutoDAO;
import br.com.jmmarca.dao.impl.ProdutoDAO;
import br.com.jmmarca.dao.impl.VisitanteDAO;
import br.com.jmmarca.model.Evento;
import br.com.jmmarca.model.EventoProduto;
import br.com.jmmarca.model.Produto;
import br.com.jmmarca.model.Visitante;
import br.com.jmmarca.util.AppException;
import br.com.jmmarca.util.Utils;

public class MainExposicao extends GenericActivity {

	private static final String TAG_LOG = "App_MainExposicao";
	List<EventoProduto> listaEventoProdutos = new ArrayList<EventoProduto>();
	EventoProdutoDAO eventoProdutoDAO;
	EventoDAO eventoDAO;
	ProdutoDAO produtoDAO;
	Integer idRegistro = null;

	Spinner evento = null;
	Spinner produto = null;

	List<Evento> listagemEvento;
	List<Produto> listagemProduto;

	ArrayAdapter<Evento> dataAdapterEvento;
	ArrayAdapter<Produto> dataAdapterProduto;

	Visitante visitante;

	ListView listaEventosProdutoListView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.exposicao_main);
		
        TextView bemvindo = (TextView) findViewById(R.id.tv_bemvindo);
        Intent it = getIntent();
        Bundle params = it.getExtras();
        
		VisitanteDAO visitanteDAO = VisitanteDAO
				.getInstance(getApplicationContext());
		Visitante visitanteLogado = visitanteDAO.encontrar(params.getInt("idVisitante"));     
		
		if(visitanteLogado==null){
			Intent goToNextActivity = new Intent(getApplicationContext(), LoginVisitante.class);
			startActivity(goToNextActivity);
		}
		visitante = visitanteLogado;

        bemvindo.setText("Seja bem vindo " + visitanteLogado.getNome()+",\n" +
        		" escolha um produto para obter informações");

		eventoProdutoDAO = EventoProdutoDAO
				.getInstance(getApplicationContext());
		eventoDAO = EventoDAO.getInstance(getApplicationContext());
		produtoDAO = ProdutoDAO.getInstance(getApplicationContext());

		evento = (Spinner) findViewById(R.id.spinner_exp_eventos);
		produto = (Spinner) findViewById(R.id.spinner_exp_produtos);

		Button apresentar = (Button) findViewById(R.id.btnApresentar);
		apresentar.setOnClickListener(onClickApresentar);

		addItemsOnEvento();
		evento.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int pos, long id) {
				Evento ev = (Evento) parent.getItemAtPosition(pos);
				if (ev != null) {
					addItemsOnProduto(ev);
				}
			}

			@Override
			public void onNothingSelected(AdapterView<?> parentView) {
				// your code here
			}
		});

	}

	// add items into spinner dynamically
	public void addItemsOnEvento() {
		listagemEvento = eventoDAO.listar();
		// ################ DEVE LISTAR SOMENTE OS EVENTOS DO DIA!// ##############

		dataAdapterEvento = new ArrayAdapter<Evento>(this,
				android.R.layout.simple_spinner_item, listagemEvento);
		dataAdapterEvento
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		evento.setAdapter(dataAdapterEvento);
	}

	// add items into spinner dynamically
	public void addItemsOnProduto(Evento ev) {
		listagemProduto = produtoDAO
				.listarPor(
						"id in (select(id_produto) from evento_produto where id_evento=?)",
						new String[] { String.valueOf(ev.getId()) });
		dataAdapterProduto = new ArrayAdapter<Produto>(this,
				android.R.layout.simple_spinner_item, listagemProduto);
		dataAdapterProduto
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		produto.setAdapter(dataAdapterProduto);
	}

	private OnClickListener onClickApresentar = new OnClickListener() {
		@Override
		public void onClick(View arg0) {
			actionApresentar();
		}
	};


	public void actionApresentar() {
		try {
			Evento eventoSelecionado = (Evento) evento.getSelectedItem();
			Produto prodtutoSelecionado = (Produto) produto.getSelectedItem();

			if (visitante == null) {
				throw new AppException("Visitante não cadastrado, cadastre-se para iniciar a apresentação");
			}
			if (eventoSelecionado == null) {
				throw new AppException("Evento não Selecionado");
			}
			if (prodtutoSelecionado == null) {
				throw new AppException("Produto não Selecionado");
			}
			evento.setEnabled(false);
			
			// iniciar apresentação
			Utils.msg(getApplicationContext(),
					"Aguarde a Localização do Produto... "+prodtutoSelecionado);
			
			//Enviar comando para o arduino encontrar o produto da cor especifica, e aguardar o retorno
			
			
			
		} catch (Exception e) {
			Utils.msg(getApplicationContext(), "Erro: "+e.getMessage());
		}
	}

}
